
import Api from "@/api/api";
import store from '../index.js';

const GetData = (api, config, name) => {
    let { commit, state, params } = config;
    return api(params || {}).then((res) => {
        console.log(`通过接口获取${name}的值`)
        const list = res?.rows || [];
        commit('SET_ENUMS_LIST', {
            list,
            name
        })
        return state[name].list;
    });
}

// 只请求一次枚举
const enums = {
    state: {
        // 品名
        goodsName: {
            list: null,
            label: 'goodsName',
            value: 'goodsName',
        },
        // 品牌
        productName: {
            list: null,
            label: 'basicsName',
            value: 'basicsName',
        },
        // 等级
        levelName: {
            list: null,
            label: 'basicsName',
            value: 'basicsName',
        },
        // 仓库
        warehouse: {
            list: null,
            label: 'warehouseName',
            value: 'warehouseName',

        },
        // 港口
        woodPort: {
            list: null,
            label: 'basicsName',
            value: 'basicsName',
        },
        // 审核状态
        audit: {
            list: [
                { label: '未审核', value: '0' },
                { label: '已审核', value: '1' },
            ],
            label: 'label',
            value: 'value',
        },
        // 入库状态
        inState: {
            list: [
                { label: '未入库', value: '0' },
                { label: '部分入库', value: '1' },
                { label: '全部入库', value: '2' },
            ],
            label: 'label',
            value: 'value',
        },
        // 供应商类别
        supplier:{
            list: null,
            label: "basicsName",
            value: "basicsId"
        },
        // 付款条件
        paymentInfo:{
            list: null,
            label: 'basicsName',
            value: 'basicsName',
        },
        baseCurrency: {
            list: null,
            label: 'basicsName',
            value: 'basicsName',
        }
    },
    mutations: {
        SET_ENUMS_LIST: (state, data = {}) => {
            let { list, name } = data;
            state[name].list = list;
        },
    },
    actions: {
        // 单独获取
        getEnum({ commit, state }, name) {

            const api = {
                goodsName: {
                    fn: Api.business.name.list,
                    params: {}
                },
                productName: {
                    fn: Api.business.brand.list,
                    params: { basicsType: 3 }
                },
                levelName: {
                    fn: Api.business.brand.list,
                    params: { basicsType: 4 }
                },
                warehouse: {
                    fn: Api.warehouse.list,
                    params: {}
                },
                woodPort: {
                    fn: Api.port.list,
                    params: { basicsType: 5 }
                },
                supplier:{
                    fn: Api.supplier.sort.list,
                    params:{basicsType: 2 }
                },
                paymentInfo:{
                    fn: Api.paymentInfo.list,
                    params:{ basicsType: 7 }
                },
                baseCurrency:{
                    fn: Api.baseCurrency.list,
                    params:{ basicsType: 6 }
                }
            }

            

            let { params } = api[name];
            return state[name].list || GetData(api[name].fn, { commit, state, params }, name);
        },
        // 在首次进入页面时获取所需要枚举
        // 需要减少服务器请求时可再次优化此处
        getEnums({ commit, state }) {
            
            // 获取品名
            // store.dispatch("getEnum", 'goodsName');
            // 获取品牌
            // store.dispatch("getEnum", 'productName');
            // 获取品牌等级
            // store.dispatch("getEnum", 'levelName');
            // 获取仓库列表
            // store.dispatch("getEnum", 'warehouse');
            // 获取港口列表
            // store.dispatch("getEnum", 'woodPort');
            // 获取供应商类别
            // store.dispatch("getEnum", 'supplier');
            // 获取付款条件
            // store.dispatch("getEnum", 'paymentInfo');
            // 获取币别
            // store.dispatch("getEnum", 'baseCurrency');
            // 获取销售员 用户 业务员
            
        }
    },

};

export default enums;
